type RemoveIndexSignature<T> = {
    [P in keyof T as [T[P]] extends [undefined] ? never : P]: T[P]
}

// [key: ...]: ... 泛类型

// 正如预期的那样，TypeScript 将值的类型推断为string. 但是如果你检查运行时的这个值——它是undefined：